package com.wjm.serversocket.test1;

import java.io.File;

/**
 * ThreadUploadPicClient==>Socket java程序间 上传文件，尝试使用多线程，失败不是这样用的
 */
public class ThreadUploadPicClient {

    /**
     * 可以上传大文件
     * 101MB传得很快
     * <p>
     * 待实现:
     * <p>
     * 1统计上传时间ok
     * 101MB 两个java程序本地上传 花费2s
     * <p>
     * 2进度ok
     * 百分比=当前上传大小追加后/总大小*100+%
     * <p>
     * 3上传文件名ok
     * 客户端和服务端都要获取到文件名
     * socket无法知道传输文件名，服务端只能通过上一接口传过来文件名
     * <p>
     * 4重命名ok
     * 服务端以当前时间命名
     * <p>
     * 5通过结束标记结束上传
     * 服务端不发字符而是发结束标记来表示上传完成
     * <p>
     * 6多线程并发上传
     *
     * 先单线程断点
     *
     * 再开多线程不断点
     *
     * 再开多线程并支持断点
     *
     * 再试线程池
     *
     * <p>
     * 7代码优化catch中处理异常或失败情况，finally中关资源
     *
     * @param args
     */
    public static void main(String[] args) {
        test();


    }

    private static void test() {
        File file = new File(UploadPicServer.fileStr);
        long lengthLong = file.length();
        int length = (int) file.length();
        System.out.println("lengthLong==>" + lengthLong);
        System.out.println("length==>" + length);

//        int s = 3;
        int s = 1;
//        int s = 10;
        for (int i = 0; i < s; i++) {
            int start = i * length;
            int end = (i + 1) * length - 1;
            if (i == length - 1) {
                end=length-1;
            }
            MyRunnable myRunnable= new MyRunnable(start,end);
            Thread thread= new Thread(myRunnable);
            thread.start();
        }
    }

}
